#ifndef HYBRIDPLUGINPLATFORM_H
#define HYBRIDPLUGINPLATFORM_H

#include <QString>
#include <QList>
#include <QSharedPointer>

class HybridPlugin;

struct Dependency
{
    QString m_name;
    QString m_version;

    Dependency(QString name, QString version);
};

class HybridPluginPlatform
{
public:
    enum Format
    {
        Library,
        Source
    };

    enum Configuration
    {
        Debug,
        Release
    };

public:
    HybridPluginPlatform(HybridPlugin& plugin);
    ~HybridPluginPlatform();

    HybridPlugin& plugin();

    const QString& name() const;
    void setName(QString name);

    int version() const;
    void setVersion(int version);

    Format format() const;
    void setFormat(Format format);

    Configuration configuration() const;
    void setConfiguration(Configuration configuration);

    const QString& url() const;
    void setUrl(QString url);

    int qtVersion() const;
    void setQtVersion(int version);

    const QList< QSharedPointer<Dependency> >& dependencies() const;
    void addDependency(QSharedPointer<Dependency> dependency);

private:
    // Parent
    HybridPlugin& m_plugin;

    // Member data
    QString m_name;
    int m_version;
    Format m_format;
    Configuration m_configuration;
    QString m_url;
    int m_qtVersion;
    QList< QSharedPointer<Dependency> > m_dependencies;

};

#endif // HYBRIDPLUGINPLATFORM_H
